package com.design.patterns.behavioralModel.singleton;


/**
 * 单例
 * 目的：保证一个类仅有一个实例，并提供一个访问它的全局访问点。
 */
public class SingletonMain {
    public static void main(String[] args) {
        /**
         * 实现方式：
         * 1. 只有private构造方法，确保外部无法实例化；
         * 2. 通过private static变量持有唯一实例，保证全局唯一性；
         * 3. 通过public static方法返回此唯一实例，使外部调用方能获取到实例。
         *
         * 具体实现请查看Singleton,当前我们就创建了一个单实例的bean
         *
         * 思考：java的单实例模式和springBean的单实例模式的区别
         * Spring单例Bean与单例模式的区别在于它们关联的环境不一样，单例模式是指在一个JVM进程中仅有一个实例，
         * 而Spring单例是指一个Spring Bean容器(ApplicationContext)中仅有一个实例。
         */
        Singleton instance = Singleton.getInstance();
        Singleton instance2 = Singleton.getInstance();
        /**
         * 测试是否为单实例的bean
         */
        System.out.println(instance == instance2);
    }
}
